package enfase.cfc.entidade;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Classe que representa a entidade Cliente
 * 
 * @author Leonardo
 * 
 */
@Entity
@Table(name = "cfc_cliente")
public class Cliente implements Serializable {

	private static final long serialVersionUID = 2373586767063323982L;

	@Id
	@Column(name = "SEQ_PESSOA")
	private Long id;
	@Column(name = "REFERENCIA")
	private String referencia;
	@Column(name = "OBSERVACOES")
	private String observacoes;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "DATA_CADASTRO")
	private Date dataCadastro;

	@OneToOne(cascade = CascadeType.ALL)
	@PrimaryKeyJoinColumn
	private Pessoa pessoa;

	/**
	 * Retorna o valor do atributo.
	 * 
	 * @return O valor do atributo id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * Define o valor do atributo.
	 * 
	 * @param id
	 *            atribui um valor ao atributo id
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * Retorna o valor do atributo.
	 * 
	 * @return O valor do atributo referencia
	 */
	public String getReferencia() {
		return referencia;
	}

	/**
	 * Define o valor do atributo.
	 * 
	 * @param referencia
	 *            atribui um valor ao atributo referencia
	 */
	public void setReferencia(String referencia) {
		this.referencia = referencia;
	}

	/**
	 * Retorna o valor do atributo.
	 * 
	 * @return O valor do atributo observacoes
	 */
	public String getObservacoes() {
		return observacoes;
	}

	/**
	 * Define o valor do atributo.
	 * 
	 * @param observacoes
	 *            atribui um valor ao atributo observacoes
	 */
	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}

	/**
	 * Retorna o valor do atributo.
	 * 
	 * @return O valor do atributo dataCadastro
	 */
	public Date getDataCadastro() {
		return dataCadastro;
	}

	/**
	 * Define o valor do atributo.
	 * 
	 * @param dataCadastro
	 *            atribui um valor ao atributo dataCadastro
	 */
	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	/**
	 * Retorna o valor do atributo.
	 * 
	 * @return O valor do atributo pessoa
	 */
	public Pessoa getPessoa() {
		return pessoa;
	}

	/**
	 * Define o valor do atributo.
	 * 
	 * @param pessoa
	 *            atribui um valor ao atributo pessoa
	 */
	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

}
